AIミニ四駆マニュアル
目次
AIミニ四駆の使い方
1. AIミニ四駆の入出力装置
2. AIミニ四駆の起動方法
3. AIミニ四駆の起動モード
1. AIミニ四駆の入出力装置
- CPU用電源スイッチ (Fig.1-1)
- モーター用電源スイッチ (Fig.1-2)
- プッシュスイッチ×2 (Fig.1-3)(Fig.1-4)
2. AIミニ四駆の起動方法
はじめに、AIミニ四駆の配線が図の通りになっているか確認をしてください。(Fig.1-5)
図の向きにおいた時に、右側が黒と白のケーブルが接続されていて、左側が青と黄色のケーブルが接続されているのが正しい配線です。逆に配線をすると壊れるので絶対に逆に配線しないでください。(Fig.1-6)
AIミニ四駆には電源スイッチが二箇所あります。
一つが車体上部にあるCPU用電源スイッチです。
こちらはLiPoバッテリーの正面にスライドスイッチがあるので、それを「ON」または「+」側へスライドさせてください。
もう一つが、車体下部にある、モーター用電源スイッチです。
こちらは車体の裏側についています。「ON」の角度までスイッチをひねってください。
この二つの電源をつけることで、AIミニ四駆は起動します。
3. AIミニ四駆の起動モード
AIミニ四駆には(デフォルトで)三つの起動モードが存在します。
これらはCPU用電源スイッチを起動する際に切り替えることが出来ます。
切り替えは車体後部についている、プッシュスイッチを用いて行います。
- DEMOモード
このモードは何もせずにCPU用電源スイッチを入れた時に起動します。
このモードは基本的に使用しないので説明を省きます。
-
通信モード
このモードは、車体後部左側にあるプッシュスイッチを押しながら、CPU用電源スイッチを入れた時に起動します。このモードはAIミニ四駆からデータが常に送信され、またすべてのコマンドを受け取り、動作するモードです。
各サンプルプログラムを使用する際には、このモードで起動してください。これ以外のモードを使用すると、一部機能が正常に動作しない可能性があります。
また、起動時はプッシュスイッチを緑色のLEDが二回点滅するまで必ず押し続けてください。
途中で手を離してしまうと、LEDテストモードになる可能性があるので、ご注意下さい。 -
モーターテストモード
このモードは、車体後部右側にあるプッシュスイッチを押しながら、CPU用電源スイッチを入れた時に起動します。このモードで起動すると、モーターが回転します。モーターが正常に動作するかどうかのテストなどにご使用ください。
モーターは車体下部にあるスイッチをONにしないと動作しないので。モーターが回らない場合はスイッチを確認してください。
注)このマイコンのファーム書き換えにも使用します。
processingサンプルプログラムの使い方
1. Processing の導入
2. サンプルプログラムのダウンロード
3. サンプルプログラムの実行
4. サンプルプログラムの解説
1. Processing の導入
Processing のダウンロードページからProcessingをダウンロードしてください。
ダウンロードの際には、「No Donation」を選択したのちに、「Download」をクリックしてください。(Fig.2-1)(Fig.2-2)
(Fig.2-1 ダウンロード画面1)
(Fig.2-2 ダウンロード画面2)
ダウンロード画面へ遷移すると、画面の一番上に最新のバージョンのダウンロード項目が表示されます。最新版を利用する場合には、この項目のうち、お使いのOSが表記されているのリンクを選択してください。(Fig.2-3)
(Fig.2-3 ダウンロード画面3)
過去のバージョンをダウンロードしたい場合は、画面中部にある「Stable Release」の項目からダウンロードしてください。こちらでダウンロードする場合も、お使いのOSが表記されているリンクを選択してダウンロードしてください。
現在サンプルアプリケーションの動作が確認できているバージョンは 3.0 beta 4 及び 2.2.1です。Processingをダウンロードする際にはバージョンにご注意下さい。
ダウンロードができたら、ソフトのインストールを行ってください。
2. サンプルプログラムのダウンロード
ProcessingのサンプルプログラムはGitHubのAI-CHIPのページから行ってください。
ダウンロードする際には、画面右側の「Download ZIP」をクリックしてください。(Fig.2-4)
(Fig.2-4 githubのページ)
ZIPファイルがダウンロード出来たら、ダウンロードファイルを任意の場所に解凍してください。
3. サンプルプログラムの実行
まず、1. Processing の導入でインストールしたProcessingを起動してください。
processingを起動したら、2. サンプルプログラムのダウンロードで解凍したフォルダ内の「Processing」→「sample_App」内にある「sample_App.pde」を開いてください。
開いたら、パソコンとAIミニ四駆のBluetoothのペアリングと通信ポートの設定を行ってください。(Fig.2-5)
(Fig.2-5 サンプルプログラムのコード)
-
Windows
コントロールパネルを開いて、ハードウェアとサウンドにある項目の「デバイスの追加」を選択します。(Fig.2-6)
(Fig.2-6 コントロールパネルの画面)
デバイスの追加の画面が表示されたら、AIミニ四駆を通信モードで起動します。
起動すると、通常Bluetoothモジュールが赤く点滅します。
パソコン側で認識すると、「実際の表示名は何?」が表示されるので、選択して「次へ」を押してください。この時選択した名前は、後ほど使うので覚えておいてください。(Fig.2-7)
(Fig.2-7 デバイスの選択画面)
次に、ペアリングコードの比較のウィンドウが表示されるので、「次へ」を押してください。(Fig.2-8)
(Fig.2-8 ペアリングコード比較画面)
最後に次のような画面が表示されると接続が完了します。(Fig.2-9)
(Fig.2-9 接続完了画面)
接続が完了したら、接続され たポートの確認を行います。ポートの確認は、Bluetoothの設定画面から行います。
まず、画面右下にあるタスクトレイの中の、Bluetoothアイコンを右クリックしてください。(Fig.2-10)
(Fig.2-10 Bluetoothアイコンの選択)
右クリックをするとメニューリストが開かれるので「設定を開く」を選択してください。(Fig.2-11)
(Fig.2-11 Bluetoothアイコンのメニュー)
「設定を開く」をクリックすると、次にような「Bluetooth」の設定画面が開かれます。開かれたら、タブの「COMポート」をクリックしてください。(Fig.2-12)
(Fig.2-12 Bluetoothの設定画面)
「COMポート」をクリックすると、パソコンに接続されたBluetooth機器の一覧が表示されます。この中の、先ほど接続した名前と「’RNI-SPP’」が書かれた欄を確認してください。
方向が「発信」となっているCOMポートを確認してください。(Fig.2-13)
(Fig.2-13 COMポート確認画面)
確認したポートはプログラムの14行目に書き込みます。デフォルトで「"COM5"」となっている部分を自分で確認したCOMポートに書き換えてください。
デフォルトでは14行目がコメントアウト(プログラムに反映されない状態に)されています。
14行目の先頭の「//」を削除し、13行目の先頭に「//」を書き足してください。 -
Mac
システム環境設定のBluetoothを選択します。次に、AIミニ四駆の電源を、通信モードでつけます。(Fig.2-14)
(Fig.2-14 システム環境設定画面)
その後、システム環境設定ウィンドウ内に表れるRNBT−××××を選択し、ペアリングを行います。(Fig.2-15)
(Fig.2-15 Buletooth接続画面)
接続が完了すると、「接続済み」の表記になります。(Fig.2-16)
(Fig.2-16 Bluetooth接続確認)
この「××××」の部分は、BluetoothモジュールのMAC IDの下四桁になります。
各自確認して、プログラムを変更してください。(Fig.2-17)
(Fig.2-17 BluetoothモジュールのID確認)
ウィンドウのデバイス欄に表示されたデバイス名が違う場合は、13行目の設定を書き換えてください
"/dev/tty.RNBT-××××-RNI-SPP"
ペアリングと通信ポートの設定出来たら、processingのプログラムを起動させてください。(Fig.2-18)
(Fig.2-18 processingの実行ボタン)
起動するとウィンドウが一つ立ち上がります。ウィンドウ上でマウスクリックをすると、AIミニ四駆の緑のLEDが点灯します。
また、エディタ下部にはログ出力が表示されます。ここにはAIミニ四駆からのデータが出力されます。データの詳細は以下をご覧ください。(Table.2-1)(Table.2-2)
(Table.2-1)
(Table.2-2)
4. サンプルプログラムの解説
- サンプルプログラムの機能
- サンプルの流れ
- コマンドの生成方法
サンプルプログラムの機能
プログラムを実行すると、ウィンドウが一つ開きます。そのウィンドウ上をクリックすると、AIミニ四駆の緑のLEDが点灯します。
エディタ下部の、ターミナルにAIミニ四駆からの出力データが表示されます。このデータは(Table.2−1)と(Table.2−2)を参考に解析してください。
また、キーボードのArrowkeyの右と左を押すとAIミニ四駆のモーターが動きます。
サンプルプログラムは以上の3つの機能を有しています。
サンプルの流れ
はじめに次の行が実行されます
//シリアル通信ライブラリを取り込む
import processing.serial.*;
//ポートのインスタンス
Serial port;
// シリアルポートから取得したデータ(Byte)
int inByte;
float m_duty = 0;
ここではプログラムの実行に必要なライブラリの取り込みや、Bluetoothの通信に必要なインスタンスの生成及びグローバル変数の定義を行っています。
この行はプログラム開始時に一回だけ実行されます。
また、この処理が終了すると、各関数が初めて実行されるようになります。
void setup(){
//画面の設定
size(100,100);
//シリアルポート設定(Bluetoothのポート)
port=new Serial(this,"/dev/tty.RNBT-4EA9-RNI-SPP",115200); //Mac
//port=new Serial(this,"COM5",115200); //Windows
port.write(command0(0));
}
setup関数は、プログラムが開始すると初めに一度だけ実行される関数です。
この関数では、実行時に出てくるウィンドウのサイズの設定と、通信ポートの設定を行っています。
必要に応じて設定内容の変更を行って下さい。詳しい設定の方法は3. サンプルプログラムの実行に記載されています。
うまく動作しない場合はそちらを確認してください。
void draw(){ background(51); }
draw関数はループして実行されます。
background関数は表示されるウィンドウの背景の色を変更しているだけです。
void serialEvent(Serial p){
// 設定したシリアルポートからデータを読み取り
inByte = port.read();
println(hex(inByte));
}
serialEvent関数はAIミニ四駆からデータが、送られるたびに実行されます。
データはprintln関数により、ターミナルに表示されます。
void keyPressed() {
if (key == CODED) { // コード化されているキーが押された
if (keyCode == LEFT) {
if(m_duty > -1){
m_duty -= 0.1;
//println(m_duty);
}
port.write(command0(m_duty));
}else if(keyCode == RIGHT){
if(m_duty < 1){
m_duty += 0.1;
//println(m_duty);
}
port.write(command0(m_duty));
}
}
}
keyPressed関数はキーボードが押されるたびに実行されます。今回はArrowkeyの左と右が押された時のみ有効になっています。
コマンドはcommand0関数を用いて生成されます。
生成されたコマンドはport.write関数を用いて、AIミニ四駆に送信されます。
コマンドの生成方法については後述します。
/
* id 0: dutyの変更コマンド
* @param duty dutyを-1.0から1.0で指定
* 負の値はモーターを逆の方向に回す
* @return 10byteのコマンド配列
/
byte[] command0(float duty){
byte[] command = new byte[10];
int int_duty;
int duty_L;
int duty_H;int_duty = (int)(duty * 32767.0);
if(int_duty<0)
{
int_duty += 65535;
}
duty_L = int_duty & 0x000000ff ;
duty_H = (int_duty & 0x0000ff00)>>8;//ヘッダー
command[0] = 99;
command[1] = 109;
command[2] = 100;
//id
command[3] = 0;
//値
command[4] = byte(duty_L);
command[5] = byte(duty_H);
//ダミー
command[6] = 0;
command[7] = 0;
command[8] = 0;
command[9] = 0;return command;
}
このコマンドはkeyPressed内で実行されます。
引数のdutyによってAIミニ四駆のモーターのパワーを変更するようなコマンドを生成します。
void mousePressed(){
byte[] command = new byte[10];
//ヘッダー
command[0] = 99;
command[1] = 109;
command[2] = 100;
//id
command[3] = 1;
//値
command[4] = byte(1);
//ダミー
command[5] = 0;
command[6] = 0;
command[7] = 0;
command[8] = 0;
command[9] = 0;
port.write(command);
}
mousePressed関数はマウスがクリックされると実行されます。
今回は緑のLEDが点灯するようにコマンドを生成したのちに、AIミニ四駆に送信しています。
void mouseReleased(){
byte[] command = new byte[10];
//ヘッダー
command[0] = 99;
command[1] = 109;
command[2] = 100;
//id
command[3] = 1;
//値
command[4] = byte(0);
//ダミー
command[5] = 0;
command[6] = 0;
command[7] = 0;
command[8] = 0;
command[9] = 0;
port.write(command);
}
mouseRelease関数はマウスのクリックが解除されると実行されます。
今回は緑のLEDが消灯するようにコマンドを生成したのちに、AIミニ四駆に送信しています。
コマンドの生成方法
AIミニ四駆への送信コマンドは要素数10のbyte配列を使用します。(固定長)(ref.2-1)
ヘッダーの始め3byteは必ず固定で、「99」「109」「100」を代入してください。
4byte目はコマンドidです。ここの数字を変更することで、AIミニ四駆への命令の種類を変えることができます。
5byte目以降はデータフェールドです。データフィールドは全て利用するわけではありません。必要のない要素には「0」を代入してください。
詳細は、同ディレクトリ内に存在する「AIミニ四駆ハッカソン」を参照ください。
(ref.2-1 コマンド送信プロトコルの説明)
-
id=0 モーターコントロール用コマンド
モーターを制御するには、送信コマンドの4byte目の「id」を「0」にする必要があります。(ref.2-2)
データフィールドは5byte目と6byte目にdutyの値を入れます。その他のデータフィールドには「0」を代入します。
dutyの値は16bitの符号付整数です。上位bitが5byte目、下位bitが6byte目です。配列の順番に気をつけてください。
(ref.2-2 モーター制御コマンド) -
id=1 緑のLED制御コマンド
LEDを制御するには、送信コマンドの4byte目の「id」を「1」にする必要があります。(ref.2-3)
データフィールドは5byte目に「0」を入れると、緑のLEDが消灯します。「1」を入れると緑のLEDが点灯します。
その他のデータフィールドは「0」を代入します。
(ref.2-3) LED制御コマンド